#ifndef _QPI__H
#define _QPI__H
#include "stdint.h"
#include "stdbool.h"
#include "stm32f7xx.h"  
#define H 184
#define V 276
#define PAGE_SIZE 256

//uint8_t WRITE_PAGE_BUF[PAGE_SIZE];
#ifdef __cplusplus
extern "C"{
#endif
    
#define SPI_CS_Pin GPIO_PIN_3
#define SPI_CS_GPIO_Port GPIOE
#define SPI_IO1_Pin GPIO_PIN_13
#define SPI_IO1_GPIO_Port GPIOD
#define SPI_IO0_Pin GPIO_PIN_12
#define SPI_IO0_GPIO_Port GPIOD
#define SPI_IO3_Pin GPIO_PIN_13
#define SPI_IO3_GPIO_Port GPIOG
#define SPI_IO2_Pin GPIO_PIN_4
#define SPI_IO2_GPIO_Port GPIOE
    
	//B1,2,3,4,5,6
#define	QPI_FLASH_CS_L     HAL_GPIO_WritePin(GPIOE, GPIO_PIN_3, GPIO_PIN_RESET);
#define	QPI_FLASH_CS_H     HAL_GPIO_WritePin(GPIOE, GPIO_PIN_3, GPIO_PIN_SET);

#define	QPI_FLASH_SCK_L    HAL_GPIO_WritePin(GPIOD, GPIO_PIN_11, GPIO_PIN_RESET);
#define	QPI_FLASH_SCK_H    HAL_GPIO_WritePin(GPIOD, GPIO_PIN_11, GPIO_PIN_SET);
	
#define	QPI_FLASH_IO1_L    HAL_GPIO_WritePin(GPIOD, GPIO_PIN_13, GPIO_PIN_RESET);
#define	QPI_FLASH_IO1_H    HAL_GPIO_WritePin(GPIOD, GPIO_PIN_13, GPIO_PIN_SET);
	 

#define	QPI_FLASH_IO2_L    HAL_GPIO_WritePin(GPIOE, GPIO_PIN_4, GPIO_PIN_RESET);
#define	QPI_FLASH_IO2_H    HAL_GPIO_WritePin(GPIOE, GPIO_PIN_4, GPIO_PIN_SET)
	 
#define	QPI_FLASH_IO3_L   HAL_GPIO_WritePin(GPIOG, GPIO_PIN_13, GPIO_PIN_RESET);
#define	QPI_FLASH_IO3_H   HAL_GPIO_WritePin(GPIOG, GPIO_PIN_13, GPIO_PIN_SET);
	 
#define	QPI_FLASH_IO0_L    HAL_GPIO_WritePin(GPIOD, GPIO_PIN_12, GPIO_PIN_RESET);
#define	QPI_FLASH_IO0_H    HAL_GPIO_WritePin(GPIOD, GPIO_PIN_12, GPIO_PIN_SET);
    
    
void QPI_GRAY_PROGRAM(uint8_t num,uint32_t color);
void COLOR_BAR_PROGRAM(uint8_t num);
void SHOW_PIC_FROM_FLASH(uint8_t num);
void QPI_FLASH_READ_PIC(uint8_t picnum);
uint8_t * QPI_READ_ID(uint8_t instruction);
uint8_t * QPI_READ_INSTRUCTION(uint8_t instruction,uint8_t length);
void QPI_FOUR_BYTE_FAST_READ_QUADOUT(uint32_t addr,uint32_t length,uint8_t *dataout);
void QPI_FOUR_BYTE_QUAD_INPUT_PAGE_PROGRAM(uint32_t addr,uint32_t length,uint8_t *datain);
void QPI_RESET(void);
void QPI_INIT(void);
void QPI_ENTER_FOUR_BYTE_ENABLE(void);
void QPI_QUADSPI_ENABLE(void);
void QPI_QUADSPI_DISABLE(void);
bool QPI_CHIP_ERASE(void);
void QPI_EXIT_FOUR_BYTE_ENABLE(void);
void QPI_WRITE_ENABLE(void);
void QPI_WRITE_DISABLE(void);
void QPI_INSTRUCTION_IO_INIT(void);
void QPI_PROGRAM_IO_INIT(void);
void QPI_READOUT_IO_INIT(void);
void QPI_WRITE_INSTRUCTION(uint8_t instruction);
void QPI_IO_TEST(void);	
void Flash_Write_NoCheck(uint8_t* pBuffer,uint32_t WriteAddr,uint32_t NumByteToWrite);
void SHOW_PIC_FROM_FLASH_A(uint8_t num);
#ifdef __cplusplus
}
#endif
#endif




